import { defineStore } from "pinia";
import { getFenleiData,getList } from "@/api/fenlei";
type state = {
    dataList:string[],
    rmData:{brand:string}[],
    start:string
    hcData:{name:string,child:child[]}[]
}

type child = {
    brand:string
}
export const usefenlei = defineStore(
    'fenlei',
    {
        state:():state=>{
            return {
                // 获取所有的分类数据
                dataList: [],
                // 获取指定分类数据的品牌
                rmData:[],
                // 最初始的分类数据选中
                start:'手机',
                hcData:[],
            }
        },
        getters:{},
        actions:{
            // 初始渲染
            async fetchGetData(){
                let res =await getFenleiData();
                // 获取分类数据
                this.dataList = res.data;
                // 获取选中数据的索引值
                let index = this.dataList.findIndex(item=>item == this.start)
                this.changeRm(index)
                return index;
            },
            // 根据索引改变rmData
            async changeRm(i:number){
                // 拿到当前的分类名称
                this.start = this.dataList[i];
                // 判断该分类数据是否被缓存
                let data= this.hcData.find(item=>item.name == this.start);
                console.log(data);
                
                // 如果存在就直接使用
                if(data){
                    this.rmData = data.child
                // 如果不存在该数据
                }else{
                    let res =await getList(this.start);
                    this.rmData = res.data;
                    this.hcData.push({name:this.start,child:[...res.data]})
                }
            },
            // 在页面渲染时根据start查找索引值
            async found(){
                let data = this.hcData.find(item=>item.name == this.start);
                let index = this.dataList.findIndex(item=>item == this.start)
                if(data){
                    this.rmData = data.child;
                }else{
                    let res =await getList(this.start);
                    this.rmData = res.data;
                    this.hcData.push({name:this.start,child:[...res.data]})
                }
                return index
            },
            // 根据选中的分类数据来查看跳转数据
            foundData(name:string){
                this.start =name;
            }
        }
    }
)